package com.xxxx.service;

import com.xxxx.entity.User;
import com.xxxx.entity.vo.MessageModel;
import com.xxxx.mapper.UserMapper;
import com.xxxx.util.GetSqlSession;
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
import com.xxxx.util.StringUtil;
import org.apache.ibatis.session.SqlSession;

public class UserService {
    public static MessageModel userLogin(String uname, String upwd){
        MessageModel messageModel = new MessageModel();

        User u = new User();
        u.setUsername(uname);
        u.setPassword(upwd);
        messageModel.setObject(u);

        if(StringUtil.isEmpty(uname) || StringUtil.isEmpty(upwd)){
            messageModel.setCode(0);
            messageModel.setMsg("用户姓名密码不能为空！");


            return messageModel;
        }

        SqlSession sqlSession = GetSqlSession.createSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user =userMapper.getUserByUsername(uname);
        if(user == null){
            messageModel.setCode(0);
            messageModel.setMsg("用户不存在！");
            return messageModel;
        }
        if(!upwd.equals(user.getPassword())){
            messageModel.setCode(0);
            messageModel.setMsg("用户密码不正确");
            return messageModel;
        }
        messageModel.setObject(user);

=======
=======
>>>>>>> 2acfcf7 (详情页)
=======
>>>>>>> d93a5bb (移除index页)
import com.xxxx.util.SecurityUtil;
import com.xxxx.util.StringUtil;
import org.apache.ibatis.session.SqlSession;
import org.mindrot.jbcrypt.BCrypt;

public class UserService {
    public static MessageModel userLogin(String uname, String upwd) {
        MessageModel messageModel = new MessageModel();

        // 参数校验
        if(StringUtil.isEmpty(uname) || StringUtil.isEmpty(upwd)){
            messageModel.setCode(0);
            messageModel.setMsg("用户名和密码不能为空！");
            return messageModel;
        }

        try (SqlSession sqlSession = GetSqlSession.createSqlSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

            // 查询用户
            User user = userMapper.getUserByUsername(uname);
            if(user == null){
                messageModel.setCode(0);
                messageModel.setMsg("用户不存在！");
                return messageModel;
            }

            // BCrypt密码验证
            if(!SecurityUtil.checkPassword(upwd, user.getPassword())){
                messageModel.setCode(0);
                messageModel.setMsg("密码不正确");
                return messageModel;
            }

            // 登录成功
            messageModel.setCode(1);
            messageModel.setMsg("登录成功");
            messageModel.setObject(user);

        } catch (Exception e) {
            messageModel.setCode(0);
            messageModel.setMsg("登录异常: " + e.getMessage());
        }
<<<<<<< HEAD
<<<<<<< HEAD
>>>>>>> a05f6f6 (密码密文存储)
=======
>>>>>>> 2acfcf7 (详情页)
=======
>>>>>>> d93a5bb (移除index页)
        return messageModel;
    }

    public MessageModel registerUser(User user) {
        MessageModel mm = new MessageModel();
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
        try (SqlSession sqlSession = GetSqlSession. createSqlSession()) {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            // 检查用户名是否存在
            if (mapper.checkUserExists(user.getUsername())>0) {
=======
=======
>>>>>>> 2acfcf7 (详情页)
=======
>>>>>>> d93a5bb (移除index页)

        // 参数校验
        if(StringUtil.isEmpty(user.getUsername()) || StringUtil.isEmpty(user.getPassword())){
            mm.setCode(0);
            mm.setMsg("用户名和密码不能为空");
            return mm;
        }

        try (SqlSession sqlSession = GetSqlSession.createSqlSession()) {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            // 检查用户名是否存在
            if (mapper.checkUserExists(user.getUsername()) > 0) {
<<<<<<< HEAD
<<<<<<< HEAD
>>>>>>> a05f6f6 (密码密文存储)
=======
>>>>>>> 2acfcf7 (详情页)
=======
>>>>>>> d93a5bb (移除index页)
                mm.setCode(0);
                mm.setMsg("用户名已被占用");
                return mm;
            }

<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
            // 插入用户
                mapper.insertUser(user);
                sqlSession.commit();
                mm.setCode(1);
                mm.setMsg("注册成功");

        } catch (Exception e) {
            mm.setCode(0);
            mm.setMsg("注册失败：" + e.getMessage());
        }
        return mm;
    }
}
=======
=======
>>>>>>> 2acfcf7 (详情页)
=======
>>>>>>> d93a5bb (移除index页)
            // 密码加密处理
            String hashedPwd = SecurityUtil.hashPassword(user.getPassword());
            user.setPassword(hashedPwd);

            // 插入用户
            int result = mapper.insertUser(user);
            if(result > 0){
                sqlSession.commit();
                mm.setCode(1);
                mm.setMsg("注册成功");
            } else {
                sqlSession.rollback();
                mm.setCode(0);
                mm.setMsg("注册失败");
            }
        } catch (Exception e) {
            mm.setCode(0);
            mm.setMsg("注册失败: " + e.getMessage());
        }
        return mm;
    }
<<<<<<< HEAD
<<<<<<< HEAD
}
>>>>>>> a05f6f6 (密码密文存储)
=======
}
>>>>>>> 2acfcf7 (详情页)
=======
}
>>>>>>> d93a5bb (移除index页)
